/**
 * 获取变量类型
 * @param obj
 * @returns {string}
 */
export function variableTypeOf(obj) {
  let res = Object.prototype.toString.call(obj).split(' ')[1]
  res = res.substring(0, res.length - 1).toLowerCase()
  return res
}

/**
 * 是否有指定的键
 * @param obj
 * @param key
 * @returns {boolean}
 */
export function hasProp(obj, key) {
  return Object.prototype.hasOwnProperty.call(obj, key);
}


/**
 * 深度克隆对象
 * @param obj 源对象
 * @return 克隆后的对象
 */
export function deepClone(obj) {
  let result;
  if (Array.isArray(obj)) {
    result = [];
  } else if (typeof obj === 'object') {
    result = {};
  } else {
    return obj;
  }
  Object.keys(obj).forEach((key) => {
    if (typeof obj[key] === 'object') {
      result[key] = deepClone(obj[key]);
    } else {
      result[key] = obj[key];
    }
  });
  return result;
}
